﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace QLKS
{
    public partial class QLP : Form
    {
        public f_Login flogin = new f_Login();
        public Dictionary<string, string> GetPassFromUser;
        public Mysql qmysql = new Mysql();
        public QLP()
        {
            InitializeComponent();
        }

        private void QLP_Load(object sender, EventArgs e)
        {
            //Getdata from database.
            string cmdText = "SELECT MaP AS `Mã phòng` , TenP AS `Tên phòng` , ht_loaiphong.TenLP AS `Loại phòng` , CASE WHEN Trangthai !='0' THEN 'Đang Sửa Chữa' ELSE 'Hoạt Động' END AS `Tình Trạng` FROM ht_phong, ht_loaiphong WHERE ht_phong.MaLP = ht_loaiphong.MaLP";
            Dictionary<string, string> Params = new Dictionary<string, string>();
            DataTable GetAllPhong = qmysql.SelectReaderSqlCommandDatatable(cmdText, Params);
            grv_phong.DataSource = GetAllPhong;

            //
            cmdText = "SELECT * FROM ht_loaiphong";
            Dictionary<string, string> Params_lp = new Dictionary<string, string>();
            DataTable GetAllLoaiPhong = qmysql.SelectReaderSqlCommandDatatable(cmdText, Params_lp);
            cb_malp.DataSource = GetAllLoaiPhong;
            cb_malp.DisplayMember = "TenLP";
            cb_malp.ValueMember = "MaLP";

            //
            DataTable Tinhtrang = new DataTable();
            Tinhtrang.Columns.Add("MaTT", typeof(string));
            Tinhtrang.Columns.Add("TenTT", typeof(string));

            Tinhtrang.Rows.Add("0","Hoạt Động");
            Tinhtrang.Rows.Add("1", "Đang Sửa Chữa");

            cb_matt.DataSource = Tinhtrang;
            cb_matt.DisplayMember = "TenTT";
            cb_matt.ValueMember = "MaTT";

        }

        public string LocChuoi(string strText)
        {
            return Regex.Replace(strText.Trim(), @"\W\s+", "");
        }

        private void bt_themp_Click(object sender, EventArgs e)
        {
            int error = 0;
            if (error == 0 && tx_tenp.Text == "")
            {
                MessageBox.Show("Không để trống thông tin trong các mục có dấu *", "Thông Báo");
                error = 1;
            }

            //get data
            string tmp_tenp = LocChuoi(tx_tenp.Text);
            string tmp_lp = LocChuoi(cb_malp.SelectedValue.ToString());
            string tmp_tt = LocChuoi(cb_matt.SelectedValue.ToString());

            if (error == 0)
            {
                //Getdata from database.
                string cmdTextCdta = "SELECT * FROM ht_phong WHERE TenP=?tenp LIMIT 0,1";
                Dictionary<string, string> Params = new Dictionary<string, string>();
                Params["tenp"] = tmp_tenp;
                Dictionary<string, string> GetInfoFromPhong = qmysql.SelectReaderSqlCommand(cmdTextCdta, Params);
                //
                if (GetInfoFromPhong.Count > 0)
                {
                    MessageBox.Show("Tên phòng đã tồn tại trong hệ thống", "Thông Báo");
                    error = 1;
                }
            }

            //add data
            if (error == 0)
            {
                string cmdTextIsnv = "INSERT INTO ht_phong(TenP,MaLP,Trangthai) VALUES(?tenp,?malp,?tt)";
                Dictionary<string, string> Params_isnv = new Dictionary<string, string>();
                Params_isnv["tenp"] = tmp_tenp;
                Params_isnv["malp"] = tmp_lp;
                Params_isnv["tt"] = tmp_tt;
                this.qmysql.NonQueryMysqlCommand(cmdTextIsnv, Params_isnv);
                MessageBox.Show("Đã thêm phòng thành công", "Thông Báo");
                //reload data
                //Getdata from database.
                //Getdata from database.
                string cmdText = "SELECT MaP AS `Mã phòng` , TenP AS `Tên phòng` , ht_loaiphong.TenLP AS `Loại phòng` , CASE WHEN Trangthai !='0' THEN 'Đang Sửa Chữa' ELSE 'Hoạt Động' END AS `Tình Trạng` FROM ht_phong, ht_loaiphong WHERE ht_phong.MaLP = ht_loaiphong.MaLP";
                Dictionary<string, string> Params = new Dictionary<string, string>();
                DataTable GetAllPhong = qmysql.SelectReaderSqlCommandDatatable(cmdText, Params);
                grv_phong.DataSource = GetAllPhong;
                grv_phong.Refresh();
            }
        }

        private void bt_suap_Click(object sender, EventArgs e)
        {
            int error = 0;
            if (error == 0 && tx_tenp.Text == "")
            {
                MessageBox.Show("Không để trống thông tin trong các mục có dấu *", "Thông Báo");
                error = 1;
            }

            //get data
            string tmp_map = tx_map.Text;
            string tmp_tenp = LocChuoi(tx_tenp.Text);
            string tmp_lp = LocChuoi(cb_malp.SelectedValue.ToString());
            string tmp_tt = LocChuoi(cb_matt.SelectedValue.ToString());

            if (error == 0)
            {
                //Getdata from database.
                string cmdTextCdta = "SELECT * FROM ht_phong WHERE TenP=?tenp LIMIT 0,1";
                Dictionary<string, string> Params = new Dictionary<string, string>();
                Params["tenp"] = tmp_tenp;
                Dictionary<string, string> GetInfoFromPhong = qmysql.SelectReaderSqlCommand(cmdTextCdta, Params);
                //
                if (GetInfoFromPhong.Count > 4)
                {
                    MessageBox.Show("Tên phòng đã tồn tại trong hệ thống", "Thông Báo");
                    error = 1;
                }
            }

            //add data
            if (error == 0)
            {
                string cmdTextIsnv = "UPDATE ht_phong SET TenP=?tenp,MaLP=?malp,Trangthai=?tt WHERE MaP=?map";
                Dictionary<string, string> Params_isnv = new Dictionary<string, string>();
                Params_isnv["tenp"] = tmp_tenp;
                Params_isnv["malp"] = tmp_lp;
                Params_isnv["tt"] = tmp_tt;
                Params_isnv["map"] = tmp_map;
                this.qmysql.NonQueryMysqlCommand(cmdTextIsnv, Params_isnv);
                MessageBox.Show("Đã sửa phòng thành công", "Thông Báo");
                //reload data
                //Getdata from database.
                //Getdata from database.
                string cmdText = "SELECT MaP AS `Mã phòng` , TenP AS `Tên phòng` , ht_loaiphong.TenLP AS `Loại phòng` , CASE WHEN Trangthai !='0' THEN 'Đang Sửa Chữa' ELSE 'Hoạt Động' END AS `Tình Trạng` FROM ht_phong, ht_loaiphong WHERE ht_phong.MaLP = ht_loaiphong.MaLP";
                Dictionary<string, string> Params = new Dictionary<string, string>();
                DataTable GetAllPhong = qmysql.SelectReaderSqlCommandDatatable(cmdText, Params);
                grv_phong.DataSource = GetAllPhong;
                grv_phong.Refresh();
            }
        }
        private void bt_xoap_Click(object sender, EventArgs e)
        {
            int error = 0;
            if (error == 0 && tx_map.Text == "")
            {
                MessageBox.Show("Không nhận diện được thông tin để xóa tài khoản", "Thông Báo");
                error = 1;
            }

            if (error == 0)
            {
                DialogResult plv = MessageBox.Show("Bạn có chắc chắn thực hiện thao tác này không ?", "Xóa Tài Khoản", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (plv.ToString() == "No")
                {
                    error = 1;
                }
            }
            //get data
            string tmp_map = tx_map.Text;
            if (error == 0)
            {
                string cmdTextIsnv = "DELETE FROM ht_phong WHERE MaP=?map";
                Dictionary<string, string> Params_isnv = new Dictionary<string, string>();
                Params_isnv["map"] = tmp_map;
                this.qmysql.NonQueryMysqlCommand(cmdTextIsnv, Params_isnv);
                MessageBox.Show("Đã xóa phòng thành công", "Thông Báo");
                //reload data
                //Getdata from database.
                string cmdText = "SELECT MaP AS `Mã phòng` , TenP AS `Tên phòng` , ht_loaiphong.TenLP AS `Loại phòng` , CASE WHEN Trangthai !='0' THEN 'Đang Sửa Chữa' ELSE 'Hoạt Động' END AS `Tình Trạng` FROM ht_phong, ht_loaiphong WHERE ht_phong.MaLP = ht_loaiphong.MaLP";
                Dictionary<string, string> Params = new Dictionary<string, string>();
                DataTable GetAllPhong = qmysql.SelectReaderSqlCommandDatatable(cmdText, Params);
                grv_phong.DataSource = GetAllPhong;
                grv_phong.Refresh();
            }

        }

        private void grv_phong_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            tx_map.Text = grv_phong.Rows[e.RowIndex].Cells["Mã Phòng"].Value.ToString();
            tx_tenp.Text = grv_phong.Rows[e.RowIndex].Cells["Tên phòng"].Value.ToString();

            cb_matt.SelectedIndex = cb_matt.FindStringExact(grv_phong.Rows[e.RowIndex].Cells["Loại phòng"].Value.ToString());

            cb_matt.SelectedIndex = cb_matt.FindStringExact(grv_phong.Rows[e.RowIndex].Cells["Tình trạng"].Value.ToString());
        }
    }
}
